﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.Xml;

namespace NSServer
{
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// <summary>
    /// Ember, akikből származik pl. az Admin, Tanar, Tanulo
    /// </summary>
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    [Serializable]
    [XmlInclude(typeof(Admin))]
    [XmlInclude(typeof(Tanar))]
    public abstract class Ember
    {
        #region Variables
        private string _userName;
        private string _password;
        private bool _active;
        #endregion

        #region Properties
        /// <summary>
        /// a felhasználó PEMS id-je
        /// </summary>
        [XmlElement("UserName")]
        public string userName
        {
            get { return _userName; }
            set { _userName = value; }
        }
        /// <summary>
        /// a felhasználó PEMS jelszava
        /// </summary>
        [XmlElement("Jelszo")]
        public string password
        {
            get { return _password; }
            set { _password = value; }
        }
        /// <summary>
        /// a PEMS-ben aktíválva van-e a felhasználó
        /// </summary>
        [XmlElement("Aktiv_allapot")]
        public bool active
        {
            get { return _active; }
            set { _active = value; }
        }
        #endregion

        #region Constructors
        /// <summary>
        /// default constructor, a serializálás miatt kell
        /// </summary>
        public Ember()
        {

        }
        /// <summary>
        /// konstruktor név megadással
        /// </summary>
        /// <param name="username">a felhasználónév</param>
        public Ember(string username)
        {
            _userName = username;
        }
        #endregion
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// <summary>
    /// Tanár
    /// </summary>
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    [Serializable]
    public class Tanar : Ember
    {
        #region Variables
        private int _t1;
        #endregion

        #region Constructors
        /// <summary>
        /// default constructor, a serializálás miatt kell
        /// </summary>
        public Tanar()
            : base()
        {

        }
        /// <summary>
        /// konstruktor név megadással
        /// </summary>
        /// <param name="usernev">a felhasználónév</param>
        public Tanar(string usernev)
            : base(usernev)
        {

        }
        #endregion

        #region Properties
        /// <summary>
        /// csak tanárnaknak létező property, teszt célból
        /// </summary>
        [XmlElement("csak_Tanarnak_letezo_prop")]
        public int tanarProprety
        {
            get { return _t1; }
            set { _t1 = value; }
        }
        #endregion
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// <summary>
    /// Admin
    /// </summary>
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////
    [Serializable]
    public class Admin : Ember
    {
        #region Variables
        private int _a1;
        #endregion

        #region Constructors
        /// <summary>
        /// default constructor, a serializálás miatt kell
        /// </summary>
        public Admin()
            : base()
        {

        }
        /// <summary>
        /// konstruktor név megadással
        /// </summary>
        /// <param name="usernev">a felhasználónév</param>
        public Admin(string usernev)
            : base(usernev)
        {

        }
        #endregion

        #region Properties
        /// <summary>
        /// csak adminnak_létező property, teszt célból
        /// </summary>
        [XmlElement("csak_adminnak_letezo_prop")]
        public int adminProprety
        {
            get { return _a1; }
            set { _a1 = value; }
        }
        #endregion

        #region Methods


        /// <summary>
        /// tud aktíválni felhasználót
        /// </summary>
        /// <param name="uID">PEMS username, ezt a felhasználót aktíválja</param>
        public void activateUser(string uID)
        {

        }

        #endregion
    }

}
